Generally, parallel computer systems in which a plurality of computation nodes are connected through a mutual connection network are used to process large scale problems at high speed. In these parallel computer systems, a plurality of nodes share computations associated with processes for target problems. At this point, data necessary for computations and their resultant computation data need to be mutually exchanged between computation nodes. Thus, data are transferred from one computation node to another computation node through the mutual connection network.
When packets that contain the same data are transmitted from one computation node to a plurality of computation nodes, the objective can be achieved in such a manner that the same packets are successively transmitted from the source computation node to different destination computation nodes. However, if the mutual connection network is provided with a function that copies a packet with which data are transferred and transmits the copied packets to a plurality of computation nodes, the load that the source computation node imposes on the mutual connection network can decrease and thereby shorten the data transfer time. The activity that transmits the same data from one computation node to a plurality of computation nodes is referred to as the multicast communication function.
The MPI (Message Passing Interface) in which is known as an ordinary form that describes a program executed on a parallel computer manages a set of processes that communicate with each other as a communicator and is provided with a plurality of functions that perform multicast communications with processes contained in the communicator.
For example, “MPI_Bcast” that the MPI defines is a function that transmits data that a particular process stores to all processes contained in the same communicator. Although this communicator may designate a set of processes of the whole system, it may specify a subset of processes. On the other hand, “MPI_Allgather” is a function that transmits designated data from any process contained in the communicator to all the processes contained in the same communicator.
Although the activities that functions such as “MPI_Bcast” and “MPI_Allgather” perform the multicast communications can be accomplished by executing a unicast communication that is a one-to-one communication a plurality of number of times, if the mutual connection network is provided with an activity that copies a packet and transmits the copied packets to a plurality of computation nodes, it is preferred to use this activity with which the mutual communication network is provided. This means that the data transfer time can be shortened and the execution performance of the entire program can be improved.
Various techniques that reduce the data transfer time and improve the execution performance for the entire program have been proposed.
For example, Non-patent Literature 1 discloses a mutual connection network that is provided with a multicast communication activity. In this technique, network switches 1100-1 to 1100-4 and network switch 1200 shown in FIG. 14 are connected such that a tree-structure network is formed. In addition, computation nodes 1300-1 to 1300-4 and network switch 1100-1 are connected; computation nodes 1400-1 to 1400-4 and network switch 1100-2 are connected; computation nodes 1500-1 to 1500-4 and network switch 1100-3 are connected; and computation nodes 1600-1 to 1600-4 and network switch 1100-4 are connected. In this case, a multicast packet transmitted from computation node 1300-1 is transmitted to a particular network switch such as network switch 1200 that has been designated as its destination and that is the root of the network structure through network switch 1100-1. Network switch 1200 that has been designated as the destination always receives multicast packets. Then, network switch 1200 transfers the multicast packets to individual computation nodes contained in the process group that performs multicast communications based on communication route information that designates the multicast packets to be transferred.